package jk.fox.engine.context;

import jk.fox.engine.RpcNodeDefinition;

import java.util.Map;

/**
 * Rpc上下文对象 上层Api-core
 * @author cuichao
 * @Description: RpcContext
 * @Date: create in 2020/5/28 22:14
 */
public interface RpcContext {
    /**
     * 注册服务提供者
     * @param bean
     * @param cls
     * @param object
     * @return
     */
    Object registryService(String bean, Class<?> cls, Object object);

    /**
     * 注册服务消费者
     * @param bean
     * @param cls
     * @param object
     * @return
     */
    Object registryReference(String bean, Class<?> cls, Object object);
    /**
     * 获取Rpc节点注册表
     * @return
     */
    Map<String,RpcNodeDefinition> rpcNodeDefinitions();

    /**
     * 获取消费者
     * @param key
     * @return
     */
    Object getService(String key);

    /**
     * 获取消费者
     * @param key
     * @return
     */
    Object getReference(String key);
    /**
     * 获取Rpc节点注册信息
     * @param key
     * @return
     */
    RpcNodeDefinition getRpcNodeDefinition(String key);

    /**
     * 获取Rpc节点注册信息
     * @param cls
     * @return
     */
    RpcNodeDefinition getRpcNodeDefinition(Class<?> cls);
}
